class Solution {
public:
//奇数还是偶数
bool ji_ou(uint32_t n)
{
    if(n%2)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}


    uint32_t reverseBits(uint32_t n) {
        stack<bool>A;
        //大于0就继续右移1位
        while(n>0)
        {
            A.push(ji_ou(n));
            //cout<<ji_ou(n);
            n=n>>1;
        }
        //不足32位就持续加0
        while(A.size()<32)
        {
            A.push(0);

        }
        uint32_t n2=0;
        int i=0;
        //二进制转十进制
        while(!A.empty())
        {
            cout<<A.top();
           if(A.top()==true)
           {
            n2+=pow(2,i);
           }
            A.pop();
            i++;
        }
        
        return n2;
    }
};
//大神代码，位运算精髓。
uint32_t reverseBits(uint32_t n) {
        uint32_t ans=0;
        //进制的本质
        int i=32;
        while(i--)
        {
            ans<<=1;
            ans+=n&1;
            n>>=1;
        }
        return ans;
    }